﻿/***********************************************
  [className] CPdfRptBase
  [func]      pdf报表业务基类
  [author]    WeiXiaoYu
  [date]      2025/01/08 16:00
  [log]       初次建立
[Modification Log]
Vers            By            Notes
************************************************/

#ifndef CPdfRptBase_H
#define CPdfRptBase_H
#include <QMap>
#include "CPdfRptTool.h"
#include "CPdfRptRestOper.h"

//声振温单个报警信息
struct SPdfSeSeSglAlmInfo
{
	QString m_sBeltName;//皮带名称
	QString m_sDevName;//设备名称
	int m_nChannelNo;//通道号
	QString sAlmTime;//报警时间(11:11:11)
	QString sAccDirect;//维度
	int nTempAlm;//温度诊断(0:正常 1:异常)
	int nVibrationAlm;//振动诊断(0:正常 1:异常)
	int nVoiceAlm;//声音诊断(0:正常 1:异常)
	double m_dTempVal;//温度值
	double m_dRms;//加速度
	QString m_sChannelName;//通道名称

	SPdfSeSeSglAlmInfo()
	{
		m_sBeltName = "";
		m_sDevName = "";
		m_nChannelNo = 0;
		sAlmTime = "";
		sAccDirect = "";
		nTempAlm = 0;
		nVibrationAlm = 0;
		nVoiceAlm = 0;
		m_dTempVal = 0;
		m_dRms = 0;
		m_sChannelName = "";
	}
};

//声振温报表数据信息
class CPdfRptSeSeDataInfo
{
public:
	QString m_sOutputPdfFolder;//输出pdf文件夹(完整本地路径)
	QString m_sDetTime;//检测日期 2024-05-13
	QString m_sDetStartTime;//检测开始时间 15:27:20
	QString m_sDetEndTime;//检测结束时间 16:30:45

	int m_nAlmCount;//报警项数
	QString m_sComment;//备注

	QVector<SPdfSeSeSglAlmInfo> m_vecFormSeSeAlmInfo;//声振温报警信息容器

	CPdfRptSeSeDataInfo()
	{
		m_sOutputPdfFolder = "";

		m_sDetTime = "2025-01-01";
		m_sDetStartTime = "00:01:00";
		m_sDetEndTime = "00:35:00";

		m_nAlmCount = 0;
		m_sComment = "";


	}
};

//所有pdf报表数据集合
class CAllPdfRptDataInfo
{
public:
	CPdfRptSeSeDataInfo extraDataInfo;//声振温报表数据信息

	CAllPdfRptDataInfo()
	{
	}
};

class CPdfRptBase  : public QObject
{
	Q_OBJECT

public:
	CPdfRptBase();
	virtual ~CPdfRptBase();

	/***************************************************************
	* @brief     函数功能:绘制报告名称
	* @input     sRptName|报告名称
	* @input     ePosition|绘制位置枚举
	* @input     painter|QPainter对象
	* @input     printer|QPrinter对象
	* @output    sErrMsg|错误描述
	* @return    bool |成功返回true，失败返回false
	* @note
	* @author    WeiXiaoYu
	* @time      2025-01-08 13:30
	* @Modification Log]
	 Vers            By            Notes
	**************************************************************/
	bool drawRptName(QString sRptName, EPdfRptComPosition ePosition, QPainter &painter, QPrinter &printer, QString &sErrMsg);

	/***************************************************************
	* @brief     函数功能:输出其他AI检测报表信息
	* @input     dataInfo|pdf报表数据
	* @output    sErrMsg|错误描述
	* @return    bool |成功返回true，失败返回false
	* @note      备注
	* @author    WeiXiaoYu
	* @time      2025-01-08 17:00
	* @Modification Log]
	 Vers            By            Notes
	**************************************************************/
	bool optRestPdfRptInfo(CAllPdfRptDataInfo &dataInfo, QString &sErrMsg);//输出其他AI检测报表信息

public:
	CPdfRptTool *m_pPdfRptTool = nullptr;//声明工具类指针 (在子类中new,并且传入操作类中)
	CPdfRptRestOper *m_pPdfRptRestOper = nullptr;//声明其他AI检测操作基类
};
#endif
